perm filename BNFER.LAP[BNF,JRA] blob sn#001924 filedate 1972-10-06 generic text, type T, neo UTF8
(SETQ IBASE (ADD1 7)) 
(DEFPROP BNFER (NIL INBNF RDBNF OUTBNF <RULES> <RULE> <RTLST> <RTPT> <LFPT> <RPELEM> <SEXPR> <SEXPRLIST> >RULES<~
 >RULE< >RTLST< >LFPT< >RTPT< >RPELEM< >SEXPR< >SEXPRLIST<) VALUE) 
(LAP INBNF SUBR) 
	(CALL 0 (E RDBNF))(JUMPN 1 G0005)(MOVEI 2 (QUOTE T))(CALL 2 (E INC))(MOVEI 1 (QUOTE "
YOUR BNF LOSES AT (PAGE . LINE) = "))(CALL 1 (E PRINC))(CALL 0 (E PGLINE))(CALL 1 (E PRIN1))
	(MOVEI 1 (QUOTE NIL))(JRST 0 G0001)
G0005 (CALL 0 (E TOP))(MOVEM 1 (SPECIAL RULES))(CALL 1 (E PRODUCE))(MOVE 2 (SPECIAL >LANG<))
	(MOVE 1 (SPECIAL <LANG>))(CALL 2 (E *APPEND))(MOVEM 1 (SPECIAL LANG))(MOVEI 1 (QUOTE OK))
G0001 (POPJ P)
NIL 


(LAP RDBNF SUBR) 
	(CALL 0 (E START))(CALL 0 (E SCANSET))(MOVEI 1 (QUOTE T))(CALL 1 (E INC))(CALL 0 (E <RULES>))
	(PUSH P 1)(CALL 0 (E SCANRESET))(MOVE 1 0 P)(SUB P (C 0 0 1 1))(POPJ P)
NIL 


(LAP OUTBNF SUBR) 
	(MOVEI 2 (QUOTE >RULES<))(MOVE 1 (SPECIAL RULES))(CALL 2 (E OUTTST))(CALL 1 (E FUNFLAT))
	(MOVEM 1 (SPECIAL &&Z))(MOVEI 1 (QUOTE 140))(CALL 1 (E OTST))(MOVEI 1 (QUOTE NIL))
	(POPJ P)
NIL 


(LAP <RULES>#1 SUBR) 
	(MOVEI 1 (QUOTE END))(CALL 1 (E SPWDX))(JUMPE 1 G0002)(MOVEI 1 (QUOTE NIL))(JRST 0 G0001)
G0002 (CALL 0 (E <RULE>))(JUMPE 1 G0005)(CALL 0 (E <RULES>))(JUMPE 1 G0005)(MOVEI 1 (QUOTE 1))
	(CALL 1 (E STK))(PUSH P 1)(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(POP P 2)(CALL 2 (E XCONS))
	(JRST 0 G0001)
G0005 (MOVE 1 (SPECIAL *NIL*))
G0001 (POPJ P)
NIL 


(LAP <RULES> SUBR) 
	(MOVEI 2 (QUOTE <RULES>#1))(MOVEI 1 (QUOTE RULES))(JCALL 2 (E NLRR))
NIL 


(LAP <RULE>#1 SUBR) 
	(CALL 0 (E <LFPT>))(JUMPE 1 G0002)(CALL 0 (E <RTLST>))(JUMPE 1 G0002)(MOVEI 1 (QUOTE 1))
	(CALL 1 (E STK))(PUSH P 1)(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(CALL 1 (E NCONS))(POP P 2)
	(CALL 2 (E XCONS))(JRST 0 G0001)
G0002 (MOVE 1 (SPECIAL *NIL*))
G0001 (POPJ P)
NIL 


(LAP <RULE> SUBR) 
	(MOVEI 2 (QUOTE <RULE>#1))(MOVEI 1 (QUOTE RULE))(JCALL 2 (E NLRR))
NIL 


(LAP <RTLST>#1 SUBR) 
	(MOVEI 1 (QUOTE 72))(CALL 1 (E CHX))(JUMPE 1 G0002)(MOVEI 1 (QUOTE 72))(CALL 1 (E CHX))
	(JUMPE 1 G0002)(MOVEI 1 (QUOTE 75))(CALL 1 (E CHX))(JUMPE 1 G0002)(CALL 0 (E <RTPT>))
	(JUMPE 1 G0002)(CALL 0 (E <SEXPR>))(JUMPE 1 G0002)(CALL 0 (E <RTLST>))(JUMPE 1 G0002)
	(MOVEI 1 (QUOTE 2))(CALL 1 (E STK))(PUSH P 1)(MOVEI 1 (QUOTE 1))(CALL 1 (E STK))(CALL 1 (E NCONS))
	(POP P 2)(CALL 2 (E XCONS))(PUSH P 1)(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(POP P 2)
	(CALL 2 (E XCONS))(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE NIL))(JRST 0 G0001)
G0016 (MOVE 1 (SPECIAL *NIL*))
G0001 (POPJ P)
NIL 


(LAP <RTLST> SUBR) 
	(MOVEI 2 (QUOTE <RTLST>#1))(MOVEI 1 (QUOTE RTLST))(JCALL 2 (E NLRR))
NIL 


(LAP <RTPT>#1 SUBR) 
	(MOVEI 1 (QUOTE 75))(CALL 1 (E CHX))(JUMPE 1 G0002)(MOVEI 1 (QUOTE 76))(CALL 1 (E CHX))
	(JUMPE 1 G0002)(MOVEI 1 (QUOTE NIL))(JRST 0 G0001)
G0002 (CALL 0 (E <RPELEM>))(JUMPE 1 G0006)(CALL 0 (E <RTPT>))(JUMPE 1 G0006)(MOVEI 1 (QUOTE 1))
	(CALL 1 (E STK))(PUSH P 1)(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(POP P 2)(CALL 2 (E XCONS))
	(JRST 0 G0001)
G0006 (MOVE 1 (SPECIAL *NIL*))
G0001 (POPJ P)
NIL 


(LAP <RTPT> SUBR) 
	(MOVEI 2 (QUOTE <RTPT>#1))(MOVEI 1 (QUOTE RTPT))(JCALL 2 (E NLRR))
NIL 


(LAP <LFPT>#1 SUBR) 
	(MOVEI 1 (QUOTE 74))(CALL 1 (E CHX))(JUMPE 1 G0002)(CALL 0 (E <ID>))(JUMPE 1 G0002)
	(MOVEI 1 (QUOTE 76))(CALL 1 (E CHX))(JUMPE 1 G0002)(MOVEI 1 (QUOTE 1))(CALL 1 (E STK))
	(JRST 0 G0001)
G0002 (MOVE 1 (SPECIAL *NIL*))
G0001 (POPJ P)
NIL 


(LAP <LFPT> SUBR) 
	(MOVEI 2 (QUOTE <LFPT>#1))(MOVEI 1 (QUOTE LFPT))(JCALL 2 (E NLRR))
NIL 


(LAP <RPELEM>#1 SUBR) 
	(MOVEI 1 (QUOTE 74))(CALL 1 (E CHX))(JUMPE 1 G0002)(CALL 0 (E <ID>))(JUMPE 1 G0002)
	(MOVEI 1 (QUOTE 76))(CALL 1 (E CHX))(JUMPE 1 G0002)(MOVEI 1 (QUOTE 1))(CALL 1 (E STK))
	(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE 1))(CALL 1 (E CHX))(JUMPE 1 G0008)(MOVEI 1 (QUOTE %DOWN))(CALL 1 (E NCONS))
	(MOVEI 2 (QUOTE FORMAT))(CALL 2 (E XCONS))(JRST 0 G0001)
G0008 (MOVEI 1 (QUOTE 31))(CALL 1 (E CHX))(JUMPE 1 G0013)(CALL 0 (E <NUMBER>))(JUMPE 1 G0013)
	(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(CALL 1 (E NCONS))(MOVEI 2 (QUOTE %IN))(CALL 2 (E XCONS))
	(CALL 1 (E NCONS))(MOVEI 2 (QUOTE FORMAT))(CALL 2 (E XCONS))(JRST 0 G0001)
G0013 (MOVEI 1 (QUOTE 31))(CALL 1 (E CHX))(JUMPE 1 G0022)(MOVEI 1 (QUOTE 0))(CALL 1 (E NCONS))
	(MOVEI 2 (QUOTE %IN))(CALL 2 (E XCONS))(CALL 1 (E NCONS))(MOVEI 2 (QUOTE FORMAT))
	(CALL 2 (E XCONS))(JRST 0 G0001)
G0022 (CALL 0 (E <ID>))(JUMPE 1 G0029)(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(CALL 1 (E NCONS))
	(MOVEI 2 (QUOTE SPWD))(CALL 2 (E XCONS))(JRST 0 G0001)
G0029 (MOVEI 1 (QUOTE 42))(CALL 1 (E CHX))(JUMPE 1 G0035)(CALL 0 (E <CHAR>))(JUMPE 1 G0035)
	(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(CALL 1 (E NCONS))(MOVEI 2 (QUOTE QCH))(CALL 2 (E XCONS))
	(JRST 0 G0001)
G0035 (CALL 0 (E <CHAR>))(JUMPE 1 G0042)(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(CALL 1 (E NCONS))
	(MOVEI 2 (QUOTE CH))(CALL 2 (E XCONS))(JRST 0 G0001)
G0042 (MOVE 1 (SPECIAL *NIL*))
G0001 (POPJ P)
NIL 


(LAP <RPELEM> SUBR) 
	(MOVEI 2 (QUOTE <RPELEM>#1))(MOVEI 1 (QUOTE RPELEM))(JCALL 2 (E NLRR))
NIL 


(LAP <SEXPR>#1 SUBR) 
	(CALL 0 (E <ATOM>))(JUMPE 1 G0002)(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE 50))(CALL 1 (E CHX))(JUMPE 1 G0006)(CALL 0 (E <SEXPRLIST>))(JUMPE 1 G0006)
	(MOVEI 1 (QUOTE 51))(CALL 1 (E CHX))(JUMPE 1 G0006)(MOVEI 1 (QUOTE 1))(CALL 1 (E STK))
	(JRST 0 G0001)
G0006 (MOVE 1 (SPECIAL *NIL*))
G0001 (POPJ P)
NIL 


(LAP <SEXPR> SUBR) 
	(MOVEI 2 (QUOTE <SEXPR>#1))(MOVEI 1 (QUOTE SEXPR))(JCALL 2 (E NLRR))
NIL 


(LAP <SEXPRLIST>#1 SUBR) 
	(CALL 0 (E <SEXPR>))(JUMPE 1 G0002)(CALL 0 (E <SEXPRLIST>))(JUMPE 1 G0002)(MOVEI 1 (QUOTE 1))
	(CALL 1 (E STK))(PUSH P 1)(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(POP P 2)(CALL 2 (E XCONS))
	(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE 56))(CALL 1 (E CHX))(JUMPE 1 G0009)(CALL 0 (E <ATOM>))(JUMPE 1 G0009)
	(MOVEI 1 (QUOTE 0))(CALL 1 (E STK))(JRST 0 G0001)
G0009 (MOVEI 1 (QUOTE NIL))(JRST 0 G0001)
G0014 (MOVE 1 (SPECIAL *NIL*))
G0001 (POPJ P)
NIL 


(LAP <SEXPRLIST> SUBR) 
	(MOVEI 2 (QUOTE <SEXPRLIST>#1))(MOVEI 1 (QUOTE SEXPRLIST))(JCALL 2 (E NLRR))
NIL 


(LAP >RULES<#1 SUBR) 
	(CALL 0 (E STK1))(CAIE 1 (QUOTE NIL))(JRST 0 G0002)(MOVEI 1 (QUOTE END))(CALL 1 (E NCONS))
	(MOVEI 2 (QUOTE (%IN 0)))(CALL 2 (E XCONS))(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE (* . *)))(CALL 1 (E MATCH))(JUMPE 1 G0006)(MOVEI 1 (QUOTE 1))(CALL 1 (E >RULE<))
	(JUMPE 1 G0006)(MOVEI 1 (QUOTE 0))(CALL 1 (E >RULES<))(JUMPE 1 G0006)(CALL 0 (E STK1))
	(PUSH P 1)(CALL 0 (E STK0))(CALL 1 (E NCONS))(MOVEI 2 (QUOTE (%IN 0)))(CALL 2 (E XCONS))
	(POP P 2)(CALL 2 (E XCONS))(JRST 0 G0001)
G0006 (MOVEI 1 (QUOTE NIL))
G0001 (POPJ P)
NIL 


(LAP >RULES< SUBR) 
	(MOVEI 2 (QUOTE >RULES<#1))(JCALL 2 (E OUTRUL))
NIL 


(LAP >RULE<#1 SUBR) 
	(MOVEI 1 (QUOTE (* *)))(CALL 1 (E MATCH))(JUMPE 1 G0002)(MOVEI 1 (QUOTE 1))(CALL 1 (E >LFPT<))
	(JUMPE 1 G0002)(MOVEI 1 (QUOTE 0))(CALL 1 (E >RTLST<))(JUMPE 1 G0002)(CALL 0 (E STK1))
	(PUSH P 1)(CALL 0 (E STK0))(CALL 1 (E NCONS))(POP P 2)(CALL 2 (E XCONS))(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE NIL))
G0001 (POPJ P)
NIL 


(LAP >RULE< SUBR) 
	(MOVEI 2 (QUOTE >RULE<#1))(JCALL 2 (E OUTRUL))
NIL 


(LAP >RTLST<#1 SUBR) 
	(CALL 0 (E STK1))(CAIE 1 (QUOTE NIL))(JRST 0 G0002)(MOVE 1 (SPECIAL FOOBAZ))(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE ((* *) . *)))(CALL 1 (E MATCH))(JUMPE 1 G0004)(MOVEI 1 (QUOTE 2))(CALL 1 (E >RTPT<))
	(JUMPE 1 G0004)(MOVEI 1 (QUOTE 1))(CALL 1 (E >SEXPR<))(JUMPE 1 G0004)(MOVEI 1 (QUOTE 0))
	(CALL 1 (E >RTLST<))(JUMPE 1 G0004)(CALL 0 (E STK2))(PUSH P 1)(CALL 0 (E STK1))(PUSH P 1)
	(CALL 0 (E STK0))(CALL 1 (E NCONS))(MOVEI 2 (QUOTE (%IN 0)))(CALL 2 (E XCONS))(POP P 2)
	(CALL 2 (E XCONS))(POP P 2)(CALL 2 (E XCONS))(MOVEI 2 (QUOTE (:CH =)))(CALL 2 (E XCONS))
	(MOVEI 2 (QUOTE (:CH :)))(CALL 2 (E XCONS))(MOVEI 2 (QUOTE (:CH :)))(CALL 2 (E XCONS))
	(MOVEI 2 (QUOTE (%IN 10)))(CALL 2 (E XCONS))(JRST 0 G0001)
G0004 (MOVEI 1 (QUOTE NIL))
G0001 (POPJ P)
NIL 


(LAP >RTLST< SUBR) 
	(MOVEI 2 (QUOTE >RTLST<#1))(JCALL 2 (E OUTRUL))
NIL 


(LAP >LFPT<#1 SUBR) 
	(MOVEI 1 (QUOTE 1))(CALL 1 (E >ID<))(JUMPE 1 G0002)(CALL 0 (E STK1))(PUSH P 1)(MOVEI 1 (QUOTE (:CH >)))
	(CALL 1 (E NCONS))(POP P 2)(CALL 2 (E XCONS))(MOVEI 2 (QUOTE (:CH <)))(CALL 2 (E XCONS))
G0002 (POPJ P)
NIL 


(LAP >LFPT< SUBR) 
	(MOVEI 2 (QUOTE >LFPT<#1))(JCALL 2 (E OUTRUL))
NIL 


(LAP >RTPT<#1 SUBR) 
	(CALL 0 (E STK1))(CAIE 1 (QUOTE NIL))(JRST 0 G0002)(MOVEI 1 (QUOTE (:CH >)))(CALL 1 (E NCONS))
	(MOVEI 2 (QUOTE (:CH =)))(CALL 2 (E XCONS))(MOVEI 2 (QUOTE (%IN 60)))(CALL 2 (E XCONS))
	(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE (* . *)))(CALL 1 (E MATCH))(JUMPE 1 G0007)(MOVEI 1 (QUOTE 1))(CALL 1 (E >RPELEM<))
	(JUMPE 1 G0007)(MOVEI 1 (QUOTE 0))(CALL 1 (E >RTPT<))(JUMPE 1 G0007)(CALL 0 (E STK1))
	(PUSH P 1)(CALL 0 (E STK0))(CALL 1 (E NCONS))(POP P 2)(CALL 2 (E XCONS))(JRST 0 G0001)
G0007 (MOVEI 1 (QUOTE NIL))
G0001 (POPJ P)
NIL 


(LAP >RTPT< SUBR) 
	(MOVEI 2 (QUOTE >RTPT<#1))(JCALL 2 (E OUTRUL))
NIL 


(LAP >RPELEM<#1 SUBR) 
	(MOVEI 1 (QUOTE (FORMAT %DOWN)))(CALL 1 (E MATCH))(JUMPE 1 G0002)(MOVEI 1 (QUOTE (:CH ↓)))
	(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE (FORMAT (%IN 0))))(CALL 1 (E MATCH))(JUMPE 1 G0005)(MOVEI 1 (QUOTE (:CH →)))
	(JRST 0 G0001)
G0005 (MOVEI 1 (QUOTE (SPWD *)))(CALL 1 (E MATCH))(JUMPE 1 G0008)(MOVEI 1 (QUOTE 0))(CALL 1 (E >ID<))
	(JUMPE 1 G0008)(CALL 0 (E STK0))(JRST 0 G0001)
G0008 (MOVEI 1 (QUOTE (QCH *)))(CALL 1 (E MATCH))(JUMPE 1 G0013)(MOVEI 1 (QUOTE 0))(CALL 1 (E >CHAR<))
	(JUMPE 1 G0013)(CALL 0 (E STK0))(CALL 1 (E NCONS))(MOVEI 2 (QUOTE (:CH /")))(CALL 2 (E XCONS))
	(JRST 0 G0001)
G0013 (MOVEI 1 (QUOTE (CH *)))(CALL 1 (E MATCH))(JUMPE 1 G0020)(MOVEI 1 (QUOTE 0))(CALL 1 (E >CHAR<))
	(JUMPE 1 G0020)(CALL 0 (E STK0))(JRST 0 G0001)
G0020 (MOVEI 1 (QUOTE (FORMAT (%IN *))))(CALL 1 (E MATCH))(JUMPE 1 G0025)(MOVEI 1 (QUOTE 0))
	(CALL 1 (E >NUMBER<))(JUMPE 1 G0025)(CALL 0 (E STK0))(CALL 1 (E NCONS))(MOVEI 2 (QUOTE (:CH →)))
	(CALL 2 (E XCONS))(JRST 0 G0001)
G0025 (MOVEI 1 (QUOTE 1))(CALL 1 (E >ID<))(JUMPE 1 G0032)(CALL 0 (E STK1))(PUSH P 1)(MOVEI 1 (QUOTE (:CH >)))
	(CALL 1 (E NCONS))(POP P 2)(CALL 2 (E XCONS))(MOVEI 2 (QUOTE (:CH <)))(CALL 2 (E XCONS))
G0032 
G0001 (POPJ P)
NIL 


(LAP >RPELEM< SUBR) 
	(MOVEI 2 (QUOTE >RPELEM<#1))(JCALL 2 (E OUTRUL))
NIL 


(LAP >SEXPR<#1 SUBR) 
	(MOVEI 1 (QUOTE 1))(CALL 1 (E >ATOM<))(JUMPE 1 G0002)(CALL 0 (E STK1))(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE 1))(CALL 1 (E >SEXPRLIST<))(JUMPE 1 G0005)(CALL 0 (E STK1))(PUSH P 1)
	(MOVEI 1 (QUOTE (:CH /))))(CALL 1 (E NCONS))(POP P 2)(CALL 2 (E XCONS))(MOVEI 2 (QUOTE %DOWN))
	(CALL 2 (E XCONS))(MOVEI 2 (QUOTE (:CH /()))(CALL 2 (E XCONS))
G0005 
G0001 (POPJ P)
NIL 


(LAP >SEXPR< SUBR) 
	(MOVEI 2 (QUOTE >SEXPR<#1))(JCALL 2 (E OUTRUL))
NIL 


(LAP >SEXPRLIST<#1 SUBR) 
	(CALL 0 (E STK1))(CAIE 1 (QUOTE NIL))(JRST 0 G0002)(MOVE 1 (SPECIAL FOOBAZ))(JRST 0 G0001)
G0002 (MOVEI 1 (QUOTE (* . *)))(CALL 1 (E MATCH))(JUMPE 1 G0004)(MOVEI 1 (QUOTE 1))(CALL 1 (E >SEXPR<))
	(JUMPE 1 G0004)(MOVEI 1 (QUOTE 0))(CALL 1 (E >SEXPRLIST<))(JUMPE 1 G0004)(CALL 0 (E STK1))
	(PUSH P 1)(CALL 0 (E STK0))(CALL 1 (E NCONS))(POP P 2)(CALL 2 (E XCONS))(MOVEI 2 (QUOTE (%IN 0)))
	(CALL 2 (E XCONS))(JRST 0 G0001)
G0004 (MOVEI 1 (QUOTE 1))(CALL 1 (E >ATOM<))(JUMPE 1 G0014)(CALL 0 (E STK1))(CALL 1 (E NCONS))
	(MOVEI 2 (QUOTE (:CH /.)))(CALL 2 (E XCONS))(MOVEI 2 (QUOTE (%IN 0)))(CALL 2 (E XCONS))
G0014 
G0001 (POPJ P)
NIL 


(LAP >SEXPRLIST< SUBR) 
	(MOVEI 2 (QUOTE >SEXPRLIST<#1))(JCALL 2 (E OUTRUL))
NIL